package kr.hkit.androidcomplete03.ch25;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

public class WordDAO {
	private WordDbHelper helper;		// DB 생성, 삽입, 삭제부분
	private SQLiteDatabase db;
	
	// 싱글턴 패턴으로 생성자 생성
	private WordDAO(Context context){
		helper = new WordDbHelper(context);			// DB버전에 해당하는 데이터베이스 생성
		db = helper.getWritableDatabase();
	}
	
	public static WordDAO open(Context context){
		return new WordDAO(context);
	}
	
	public void close(){
		helper.close();
	}
	
	// 추가
	public boolean insert(String eng, String han){
		/*String sql = "insert into dic values (null, '"+eng+"', '"+han+"');";
		try{
			db.execSQL(sql);
		} catch(SQLException e){
			Log.d("TAG", "insert error" + e.getMessage());
			return false;
		}
		return true;*/
		
		// 다른 방법으로 DB를 연결하기 (ContentValues : 테이블에 삽입되는 레코드를 의미)
		ContentValues row = new ContentValues();
		row.put("eng", eng);
		row.put("han", han);
		
		long res = db.insert("dic", null, row);
		if(res == -1)
			return false;
		else
			return true;
	}
	
	// 전체 삭제
	public boolean deleteAll(){
		/*String sql = "delete from dic;";
		try{
			db.execSQL(sql);
		} catch(SQLException e){
			Log.d("TAG", "deleteAll error" + e.getMessage());
			return false;
		}
		return true;*/
		
		// DB 다루는 다른 방법
		db.delete("dic", null, null);
		return true;
	}
	
	// 삭제
	public boolean delete(int id){
		/*String sql = "delete from dic where _id ="+ id +";";	// id는 int이므로 ""가 들어가면 안된다.
		try{
			db.execSQL(sql);
		} catch(SQLException e){
			Log.d("TAG", "delete error" + e.getMessage());
			return false;
		}
		return true;*/
		
		// 여러가지 조건을 추가할 수 있으므로 배열형태로 정함.
		String[] args = {String.valueOf(id)};			// id값을 String으로 변환하여 배열공간에 넣어줌
		db.delete("dic", "_id = ?", args);				
		return true;
	}
	
	// 전체목록 보기
	public Cursor selectAll(){
		String sql = "Select * from dic;";
		Cursor cursor = db.rawQuery(sql, null);					// args는 리턴타입이 들어감.
		
		if(cursor != null)
			cursor.moveToFirst();
		return cursor;
	}
	
	// 자료 갱신
	public boolean update(int id, String eng, String han) {
		/*String sql = "update dic set han ='" + han + "', eng = '" + eng
				+ "' where _id = '" + id + "'; ";*/
		String sql = "update dic set han='"+han+"', eng='"+eng+"' where _id ="+id+";";
		try {
			db.execSQL(sql);
		} catch (SQLException e) {
			Log.d("TAG", "update error" + e.getMessage());
			return false;
		}
		return true;

	}
}
